/***
 * token验证的js文件
 */
let jwt = require('jsonwebtoken');
let signKey = 'mes_qdhd_mobile_xhykjyxgs'; //进行解密token使用的的密钥

/**生成token*/
exports.setToken = function(username,business) {
  console.log('正在生成token......');
  let token = jwt.sign({
      username: username,
      business: business
    },signKey,{ expiresIn:'6h' });
  return token
}

/**解密token*/
exports.verToken = function(token) {
  return new Promise((resolve,reject)=>{
    console.log('正在验证token');
    let info = jwt.verify(token.split(' ')[1],signKey);

    let dateline = new Date() / 1000; // 获取当前时间戳
    if (info.exp <= dateline) {
      console.log('token已过期');
      reject('token过期!!!');
    } else {
      console.log('token验证成功');
      resolve(info);
    }
  })
}




/***
 * 正则表达式： x+  ->  匹配1个或多个x
 *            x*  ->  匹配0个或多个x
 *            x?  ->  匹配0个或多个x
 *
 *    如输入 2019 ,  y:输出9;    yy:输出19;    yyy:输出019;    yyyy:输出2019
 */
/**格式化时间格式的函数*/
exports.formatDate = function(date, fDate) {
  // 进行匹配，因为年格式化的位数可能是1、2、3、4位,所以单独对年进行格式化

  // let date = new Date(Date.parse(datem));
  console.log('formDate' + date);
  console.log('formDate typeof' + typeof date);
  if (/(y+)/.test(fDate)) {
    fDate = fDate.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) //RegExp 表示全局对象,这里就相当于匹配对象
  }

  let other = { //对其他进行匹配
    'M+': date.getMonth() + 1, //对月进行匹配
    'd+': date.getDate(), //对天进行匹配
    'h+': date.getHours(), //对小时进行匹配
    'm+': date.getMinutes(), //对分钟进行匹配
    's+': date.getSeconds() //对秒匹配
  };
  for (let item in other) { //依次对other(其他)内的属性进行格式化
    if (new RegExp(`(${item})`).test(fDate)) {
      let strItem = other[item] + ''; //把other内的属性转变为字符串
      fDate = fDate.replace(RegExp.$1, (RegExp.$1.length === 1) ? strItem : fillZero(strItem))
    }
  }

  return fDate //返回格式化后的date
}
/**把时间格式化函数内的other中的属性,缺省的位数用0补充*/
function fillZero(str) {
  return ('00' + str).substr(str.length)
}


// /**解密token*/
// let signKey = 'mes_qdhd_mobile_xhykjyxgs'; //进行解密token使用的的密钥
// exports.kaiToken = function(token){
//   let info = jwt.decode(token);
//   console.log('正在验证token-------------' + info);
//   console.log(info);
//   return info
// }